#ifndef DATABASEMANAGER_H
#define DATABASEMANAGER_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QCryptographicHash>
#include <QDebug>
#include <QVariantMap>
#include <QJsonDocument>  // 添加此行
#include <QJsonObject>    // 添加此行
#include <QJsonValue>     // 添加此行

class DatabaseManager : public QObject
{
    Q_OBJECT

public:
    explicit DatabaseManager(QObject *parent = nullptr);
    ~DatabaseManager();

    // 数据库连接管理
    bool connectToDB();
    bool initializeUserTable();

    // 用户认证相关
    bool registerUser(const QString &username, const QString &email, const QString &password);
    QVariantMap loginUser(const QString &username, const QString &password);
    
    // 辅助方法
    bool userExists(const QString &username);
    bool emailExists(const QString &email);
    QString hashPassword(const QString &password);
    
    // 机器人管理相关
    bool initializeRobotTables();
    bool registerRobot(const QString &sn, const QString &ip, int port);
    bool updateRobotStatus(const QString &sn, bool online);
    bool updateRobotPing(const QString &sn);
    QVariantMap getRobotInfo(const QString &sn);
    QVariantList getAllRobots();
    QVariantList getTimeoutRobots(int timeoutSeconds = 15);
    bool insertRobotData(const QString &sn, double posX, double posY, double posZ, double temp);
    bool insertFullRobotData(const QString &sn, const QVariantMap &data);
    QVariantList getRobotData(const QString &sn, int limit = 100);
    
    // 添加设备状态管理相关函数
    bool updateRobotConnectionInfo(const QString &sn, const QString &ip, int port);
    bool getRobotConnectionStatus(const QString &sn);
    QVariantList getActiveRobots();
    bool resetRobotStatus(const QString &sn);

private:
    QSqlDatabase db;
};

#endif // DATABASEMANAGER_H
